package com.fin.quant.domain.service;

import com.fin.quant.domain.entity.AssetEntity;
import com.fin.quant.instra.mysql.model.Asset;

import java.util.List;

/**
 * 智能推荐领域服务接口
 */
public interface RecommendationDomainService {

    /**
     * 获取智能推荐
     */
    List<AssetEntity> getRecommendations(Long userId, String type, int limit);

    /**
     * 获取基于目标的推荐
     */
    List<Object> getGoalBasedRecommendations(String goalId, Long userId,
            Double investmentAmount, Double targetIncome,
            String riskLevel, Integer timeHorizon);

    /**
     * 获取今日推荐
     */
    List<Object> getTodayRecommendations(int limit);

    /**
     * 获取周推荐
     */
    List<Object> getWeeklyRecommendations(int limit);

    /**
     * 获取收入目标推荐
     */
    List<Object> getIncomeGoalRecommendations(Double targetIncome, int limit);

    /**
     * 获取个性化推荐
     */
    List<Object> getPersonalizedRecommendations(Long userId, int limit);

    /**
     * 反馈推荐结果
     */
    boolean feedbackRecommendation(Long recommendationId, String action, String reason);

    /**
     * 生成推荐
     */
    List<Object> generateRecommendations(Long userId, String recommendationType);

    /**
     * 更新推荐模型
     */
    void updateRecommendationModel();

    /**
     * 获取推荐统计信息
     */
    Object getRecommendationStatistics(Long userId);

    /**
     * 清理过期推荐
     */
    void cleanExpiredRecommendations();
}
